package cn.anytrust.hbase.service;

import java.io.IOException;
import java.util.List;

public interface HBaseConnectionService {

	/**
	 * 根据rowkeys获取返回值,返回值为List<Object>
	 * 传递的参数会需要返回值的类型.同时Object必须包含@ORMHBaseColumn 与@ORMHBaseColumnTable
	 * 
	 * @param rowKey
	 * @return
	 * @throws IOException
	 */
	public List<Object> get(Object obj, String... rowkeys);

	/**
	 * 根据表名称删除指定的rowkey,rowkey的值为HBase的主键
	 * 
	 * @param rowkey
	 */
	public void delete(String tableName, String... rowkeys);

	/**
	 * 插入Object数据到相关库中.Object中的Id必须为Rowkey,同时必须定义id的HBaseColumn的两个值为Rowkey.类似于:
	 * 
	 * @ORMHBaseColumn(family="rowkey",qualifier="rowkey")
	 * private String id;
	 * 
	 * 其他字段的family,qualifier值与HBase库中的一致.如果库中没有family需要手动创建family.qualifier则可以任意插入.
	 * 
	 * @param objs
	 */
	public void insert(Object... objs);

	/**
	 * 根据Object获取到 @ORMHBaseTable 中的tableName.然后基于rowkeys删除数据.如果不需要定义Object则可以直接调用
	 * delete(String tableName,String...rowkeys)
	 * 
	 * @param rowkey
	 */
	public void delete(Object obj, String... rowkeys);

}
